package clienteServidor.mensajeDatagrama;

import java.io.IOException;
import java.net.SocketException;

import clienteServidor.DatoConfiguracion;
import clienteServidor.DatosEquipo;
import clienteServidor.excepciones.MensajeNoEsperadoException;

public class MensajesClienteAServidor {
	private Datagrama datagrama;
	
	public MensajesClienteAServidor(int puertoUDPCaS, int puertoUDPSaC) throws SocketException {
		datagrama= new Datagrama(puertoUDPCaS);
	}
	
	public DatoConfiguracion recibirDatoConfiguracion(int timeout) throws ClassNotFoundException, SocketException, IOException, MensajeNoEsperadoException{
		DatoConfiguracion datoConfiguracion= null;
		
		Object o= null;
		try{
			o= datagrama.recibir(timeout);
			datoConfiguracion= (DatoConfiguracion)o;		
		}catch(ClassCastException cce){
			throw new MensajeNoEsperadoException(o);
		}
		return datoConfiguracion;
	}
	
	public void enviarDatosEquipo(DatosEquipo datosEquipo) throws SocketException, IOException{
		String noIp= "0.0.0.0", broadcast;
		
		if(datosEquipo.getBroadcast().equals(noIp)) broadcast= "255.255.255.255";
		else broadcast= datosEquipo.getBroadcast();
		System.out.println("Broadcast a usar: "+broadcast);
		datagrama.enviar(datosEquipo, broadcast, true);
		
	}

	public void cerrarDatagrama() {
		datagrama.cerrarDatagrama();
	}
	
	
}
